1 准备工作

在ruc配色中,主要选择了两种配色方案,一种为红色与灰色搭配,另一种为取自官网的红色与棕色配色。

1.载入R包
首先载入数据,在这里我们加载绘图需要的包,并先对数据进行简单处理。

library(ggthemr)
library(ggplot2)
library(gridExtra)
library(ggthemes)
library(ggridges)
library(dplyr)
library(vcd)
library(ggrepel)                   #用于对密集散点的标柱
library(plotly)                    #交互式气泡图作图包
library(gapminder)                 #数据来源包
library(highcharter) 
library(viridisLite) 
library(circlize)
library(wrGraph)
library(FactoMineR)                #绘制wrGraph图形
library(factoextra)
library(RColorBrewer)

2.数据处理

setwd("/Users/apple/Desktop/ggplot 可视化")
movie=read.csv("清洗后数据.csv")
college=read.csv("college.csv")  

data <- gapminder %>% filter(year=="2007")%>%dplyr::select(-year) # 数据来源是gapminder包,选择其中2007年的数据删去year一列
gui<-read.csv("2015.csv")
data("vaccines") #highcharter自带的数据集

x=c(11,34,16,34,23,12,46,322,5,78,22,445,22,12,234,24,74,23,21,57)
data1=matrix(x,nrow=5,ncol=4)
rownames(data1)=c("chromosome1","chromosome2","chromosome3","chromosome4","chromosome5") #生成行名
colnames(data1)=c("gene1","gene2","gene3","gene4") # 生成列名

2.基本图形准备
绘制堆积图和环形图来展示色条。

2 ggthemr包

在ggthemr包中,利用define_palette()函数可以较为简便定义palette。gathmr包中,绘制图形时颜色读取顺序与别的包不太一致,ggthemr是从自定义色条的中间向两边根据颜色的数目提取,故在这里将“人大红”放在了色条的正中。

2.1 红灰配色

ruc_grey=define_palette(
  swatch = c('#c47775','#c6c6c6','#8b8b8b','#ad0b2c','#c8928f','#be5b5b','#545454'),    ##自定义用于几何图形颜色绘制的颜色向量  
  gradient = c(upper='#c6c6c6',lower='#ad0b2c'))                                        ##颜色选择步长范围

ggthemr(ruc_grey)                                                                       ##主题设定
grid.arrange(stacked,bubble,ridgeline,ncol=2)                                           ##将图形按照两列排列                                          

2.2 人大官网配色

从中国人民大学官网上,通过取色器取色得到官网配色,绘制图形如下:

ruc_web=define_palette(swatch = c('#FEF9EC','#CCB08F','#948D74','#AD0b2C','#AB896D','#FFEDC8' ),
                        gradient =c(upper='#AB896D',lower='#AD0b2C')
                        )
ggthemr(ruc_web)
grid.arrange(stacked,bubble,ridgeline,ncol=2)     

3 rcolorbrewer包

在ggthemr包中,在绘制图形时,色条颜色的选择控制较难,且对背景版的theme调整较少。

divlist  <- c("ruc3","ruc2","ruc4")                                                            ##定义极端型色条
names(divlist) <- divlist 
seqlist  <- c("ruc1")                                                                   ##定义连续型色条
names(seqlist) <- seqlist             

divnum <- rep(10, length(divlist))                    
names(divnum)  <- divlist                                                               ##获取离散型色条的名称
seqnum <- rep(8, length(seqlist))
names(seqnum) <- seqlist                                                                ##获取连续型色条的名称
namelist<-c(divlist,seqlist)                                                            ##色条的名称列表
maxcolors <- c(divnum,seqnum)                                                           ##色条的色块个数


brewer.pal<-function(n,name){                                                           ##定义颜色填充函数
  if(!(name %in% namelist)){
    stop(paste(name,"is not a valid palette name for brewer.pal\n"))
  }   
  if(n<3){ 
    warning("minimal value for n is 3, returning requested palette with 3 different levels\n")
    return(brewer.pal(3,name))
  }
  if(n>maxcolors[which(name==namelist)]){
    warning(paste("n too large, allowed maximum for palette",name,"is",maxcolors[which(name==namelist)]),
            "\nReturning the palette you asked for with that many colors\n")
    return(brewer.pal(maxcolors[which(name==namelist)],name))
  }
  
  switch(name,        
         ruc1 = switch(n-2,                                                             ##红——橙色——灰
                         rgb(c(200,198,214),
                             c(146,198,96),
                             c(143,198,77),maxColorValue=255),
                         rgb(c(178,214,244,253),
                             c(24,96,165,219),
                             c(43,77,130,199),maxColorValue=255),
                         rgb(c(178,214,244,253,224),
                             c(24,96,165,219,224),
                             c(43,77,130,199,224),maxColorValue=255),
                         rgb(c(178,214,244,253,224,186),
                             c(24,96,165,219,224,186),
                             c(43,77,130,199,224,186),maxColorValue=255),
                         rgb(c(178,214,244,253,224,186,135),
                             c(24,96,165,219,224,186,135),
                             c(43,77,130,199,224,186,135),maxColorValue=255),
                         rgb(c(178,214,244,253,224,186,135,77),
                             c(24,96,165,219,224,186,135,77),
                             c(43,77,130,199,224,186,135,77),maxColorValue=255)
                       ),
         ruc2 = switch(n-2,                                                             ##官网取色(红——棕)
                                     rgb(c(148,200,173),
                                         c(141,146,11),
                                         c(116,143,44),maxColorValue=255),
                                     rgb(c(204,148,173,200),
                                         c(176,141,11,146),
                                         c(143,116,44,143),maxColorValue=255),
                                     rgb(c(171,204,148,173,200),
                                         c(137,176,141,11,146),
                                         c(109,143,116,44,143),maxColorValue=255),
                                     rgb(c(255,171,204,148,173,200),
                                         c(237,137,176,141,11,146),
                                         c(200,109,143,116,44,143),maxColorValue=255),
                                     rgb(c(254,255,171,204,148,173,200),
                                           c(249,237,137,176,141,11,146),
                                           c(236,200,109,143,116,44,143),maxColorValue=255)
                       ),
         
           ruc3 = switch(n-2,                                                          ##红灰配色
                                     rgb(c(200,139,173),
                                           c(146,139,11),
                                           c(143,139,44),maxColorValue=255),
                                     rgb(c(198,139,173,200),
                                           c(198,139,11,146),
                                           c(198,139,44,143),maxColorValue=255),
                                     rgb(c(198,139,173,200,190),
                                           c(198,139,11,146,91),
                                           c(198,139,44,143,91),maxColorValue=255),
                                     rgb(c(196,198,139,173,200,190),
                                           c(119,198,139,11,146,91),
                                           c(117,198,139,44,143,91),maxColorValue=255),
                                     rgb(c(196,198,139,173,200,190,84),
                                           c(119,198,139,11,146,91,84),
                                           c(117,198,139,44,143,91,84),maxColorValue=255)
         ),
         ruc4 = switch(n-2,                                                          ##红灰配色
                                   rgb(c(148,200,173),
                                         c(141,146,11),
                                         c(116,143,44),maxColorValue=255),
                                     rgb(c(204,148,173,200),
                                         c(176,141,11,146),
                                         c(143,116,44,143),maxColorValue=255),
                                     rgb(c(171,204,148,173,200),
                                         c(137,176,141,11,146),
                                         c(109,143,116,44,143),maxColorValue=255),
                                     rgb(c(255,171,204,148,173,200),
                                         c(237,137,176,141,11,146),
                                         c(200,109,143,116,44,143),maxColorValue=255),
                                     rgb(c(254,255,171,204,148,173,200),
                                           c(249,237,137,176,141,11,146),
                                           c(236,200,109,143,116,44,143),maxColorValue=255),
                                    rgb(c(254,255,171,204,148,173,200,198,139,84),
                                           c(249,237,137,176,141,11,146,198,139,84),
                                           c(236,200,109,143,116,44,143,198,139,84),maxColorValue=255)))
         }   

theme_ruc_black <- function(base_size = 12,                            ##主题函数设定
                      color =" white",
                      base_family = "sans",
                      title_family = "sans") {
  theme_foundation(base_size = base_size, 
                   base_family = base_family) +
    theme(line = element_line(linetype = 1, colour = "black"),
          rect = element_rect(fill = "white", 
                              linetype = 0, 
                              colour = "black"),                        ##背景版设定
          text = element_text(colour = "black"),
          title = element_text(family = title_family,                   ##标题字体设定
                               size = rel(1)),                          ##标题大小设定
          axis.title = element_blank(),                                 ##坐标轴标题设定
          axis.text = element_text(face = "bold",                       ##坐标轴文字设定
                                   size = rel(1)),                      ##坐标轴文字大小
          axis.text.x = element_text(colour = NULL),
          axis.text.y = element_text(colour = NULL),
          axis.ticks = element_line(colour = NULL),
          axis.ticks.y = element_blank(),
          axis.ticks.x = element_line(colour = NULL),
          axis.line = element_line(),
          axis.line.y = element_blank(),
          legend.background = element_rect(),                           ##图例背景板颜色
          legend.position = "top",
          legend.direction = "horizontal",
          legend.box = "vertical",
          panel.grid = element_line(colour = NULL, 
                                    linetype = 3),
          panel.grid.major = element_blank(),
          panel.grid.major.x = element_blank(),
          panel.grid.minor = element_blank(),
          plot.title = element_text(hjust = 0, 
                                    face = "plain"),                    ##字体设定
          plot.margin = unit(c(0.5, 0.5, 0.5, 0.5), "lines"),           ##绘制图形边界设定
          strip.background = element_rect())
}
##1
stacked1=stacked+
  scale_fill_manual(values =brewer.pal(4,"ruc2"))+
  theme_ruc_black()


##2
bubble1=bubble+
  scale_color_manual(values =brewer.pal(6,"ruc1"))+
  theme_ruc_black()


##3
densitycontour1=densitycontour+
  scale_fill_manual(values =colorRampPalette(rev(brewer.pal(7,'ruc2'))) (20))
##4
ridgeline1=ridgeline+
  scale_fill_gradientn(colors=colorRampPalette(rev(brewer.pal(3,'ruc2')))(20))+
  theme_ruc_black()

grid.arrange(stacked1,densitycontour1,bubble1,ridgeline1,ncol=2)

##5
wrgraph11=fviz_pca_ind(iris.Fac, 
             geom.ind="point", #点图
             col.ind=iris$Species, #颜色按照species填充
             palette=brewer.pal(3,"ruc2"), #调色板
             addEllipses=TRUE, #椭圆形
             legend.title="Groups" ) #图例名称
wrgraph11

##6 
wrgraph12=plotPCAw(t(as.matrix(iris[,-5])),
         gl(3,50,labels=c("setosa","versicolor","virginica")), #3组50个点
         tit="Iris data", 
         rowTyName="types of leaves",
         suplFig=FALSE,
         colBase=brewer.pal(3,"ruc2"),
         cexTxt=1.3, #字符大小
         rotatePC=2) #主成分图旋转

##7
rf <- colorRampPalette(rev(brewer.pal(3,'ruc2')))                                      ##颜色设定
r <- rf(20)
heatmap=hchart(vaccines, "heatmap", hcaes(x = year, y = state, value = count)) %>%     #横纵坐标所对应的list以及填入的值
hc_colorAxis(stops = color_stops(10, rev(inferno(10))),type ="red") %>%                    #设置颜色的渐变(stops标量色轴的梯度)
hc_yAxis(reversed = TRUE, offset = -20, tickLength = 0,                                #设置y轴,反转y轴(使最大值最接近原点),
           gridLineWidth = 0, minorGridLineWidth = 0,                                  #轴标题到轴线的距离,主刻度的像素长度,网格线的宽度等
           labels = list(style = list(fontSize = "8px"))) %>% 
hc_tooltip(formatter = fntltp) %>%                            #设置tooltip
hc_xAxis(plotLines = list(plotline)) %>%                      #绘制疫苗上市线
hc_title(text = "Infectious Diseases and Vaccines") %>%       #标题
hc_legend(layout = "vertical",
          verticalAlign = "top",                              #legend,右上竖直放置
          align = "right", 
          valueDecimals = 0) %>% 
hc_size(height = 600)                                         #图大小
heatmap  
##8
mosai1=mosaic(~Class+Age+ Sex + Survived , 
       data = Titanic,
       highlighting = T,                             ##准许改变颜色
       highlighting_fill = brewer.pal(7,"ruc2")      ##调整颜色
       )